package day05;

import java.util.Scanner;

public class FiveChessGame {
	
		static char[][] chess=new char[16][16];
		static boolean isBlack=true;		
		
		public static void main(String[] args){			
			for(int i=0;i<chess.length;i++){
				for(int j=0;j<chess[i].length;j++){
					chess[i][j]='*';
				}
			}                                 //这个for循环给chess数组定义初始值是 * 号
			
			Scanner s=new Scanner(System.in);
			printChess();            //这个方法，用来输出面板布局
			while(true){
				System.out.println("请"+(isBlack?"黑":"白")+"方落子：");
				String str=s.next();
				int r=fromCharToInt(str.charAt(0));		//表示把我们输入的一个字符串转换成一个数组，而(0)表示去该数组下标为0的那个位子上的东西。
				int c=fromCharToInt(str.charAt(1));	//（1）表示去数组下标为1的那个位子上的。
				if(chess[r][c]!='*'){
					System.out.println("该位置已经有棋子，请重新输入！");
					continue;
				}else{
					chess[r][c]=isBlack?'@':'O';
					printChess();
					if(wasWin(r,c)){    //括号里 的rc 代表我调用wasWin这个方法是传给他的实参。
						System.out.println((isBlack?"黑":"白")+"方获胜！");
						break;
					}
				}
				
				isBlack=!isBlack;
			}
		}
		
		/**
		 * 输出棋盘
		 *
		 */
		public static void printChess(){
			System.out.print("  ");
			for(int i=1;i<17;i++){
				if(i>=10){
					char p=(char)(i+87);
					System.out.print(p+"  ");
				}else 
				System.out.print(i+"  ");
			}	
			System.out.println();
			for(int i=0;i<16;i++){
				if(i+1>9){
					char p=(char)(i+1+87);
					System.out.print(p+"  ");
				}else if(i+1<10){System.out.print((i+1)+"  ");}
				for(int j=0;j<16;j++){					
					System.out.print(chess[i][j]+"  ");															
				}
				System.out.println("");				
			}		
		}
		
		/**
		 * 将'0'~'f'字符转化为下标值0~15
		 * @param c
		 * @return
		 * ，我们收到的是字符，转换为数字，
		 */
		public static int fromCharToInt(char c){
			int d;
			if('0'<=c && c<='9'){
				d=c-48-1;
			}else{
				d=c-87-1;
			}
			
			return d;
		}
		
		
		public static boolean wasWin(int r,int c){
			return wasWinAtV(r,c)||wasWinAtH(r,c)||wasWinAtLD(r,c)||wasWinAtRD(r,c);
		}
		public static boolean wasWinAtV(int r,int c){


			int num=1;  //记录下了几个棋子；
			int x=c;		//
			while(x+1<chess[0].length && chess[r][x+1] !='*'){
				if(chess[r][x] == chess[r][x+1]){
					num++;
					x++;
				}else break;
			}
			x=c;
			while(x-1>=0 && chess[r][x-1]!='*'){
				if(chess[r][x]==chess[r][x-1]){
				num++;
				x--;
				}else break;
			}
			if(num>=5)
			return true;
			else return false;

		}
		
		public static boolean wasWinAtH(int r,int c){
//			????
			return false;
		}
		
		public static boolean wasWinAtLD(int r,int c){
//			????
			return false;
		}
		
		public static boolean wasWinAtRD(int r,int c){
//			????
			return false;
		}

}
